
void main() {
  //参数分为普通参数和可选参数
  //1、普通参数为必传参数，并且顺序固定
  //2、可选参数[],表示参数个数是可选的，但是传入顺序必须保持一致
  //3、可选参数{ }，表示传入的参数顺序和个数均可选，但是传入参数必须制定命名
  //4、可选参数[]和{ }，均支持默认参数
  //5、可选参数[]和{ }，不可混用
  add1(100, 100, 100, 100); //最普通的传参: 调用时，参数个数和参数顺序必须固定

  add2(100, 100); //调用时，参数个数不固定，但是参数顺序需要一一对应, 不支持命名参数(也就意味着顺序不变)
  add3(
      b: 200,
      a: 200,
      c: 100,
      d: 100); //调用时，参数个数不固定，参数顺序也可以不固定，支持命名参数(也就意味着顺序可变)
  add4(100, 100, d: 100, c: 100); //调用时，a,b参数个数固定顺序笃定，c,d参数个数和顺序也可以不固定
}

//num a, num b, num c, num d 最普通的传参: 调用时，参数个数和参数顺序必须固定
add1(num a, num b, num c, num d) {
  print("a = $a, b = $b, c = $c, d = $d");
}

//[num a, num b, num c, num d]传参: 调用时，参数个数不固定，但是参数顺序需要一一对应, 不支持命名参数
add2([num a, num b, num c = 10, num d]) {
  print("a = $a, b = $b, c = $c, d = $d");
}

//{num a, num b, num c, num d}传参: 调用时，参数个数不固定，参数顺序也可以不固定，支持命名参数,也叫命名参数
add3({num a, num b, num c = 10, num d}) {
  print("a = $a, b = $b, c = $c, d = $d");
}

//num a, num b, {num c, num d}传参: 调用时，a,b参数个数固定顺序固定，c,d参数个数和顺序也可以不固定
add4(num a, num b, {num c = 10, num d}) {
  print("a = $a, b = $b, c = $c, d = $d");
}


